草庐IT

Java OutOfMemoryError 奇怪的行为

全部标签

c++ - "Socket operation on non-socket"错误由于奇怪的语法

我在调用connect时在我的一些网络代码中遇到错误Socketoperationonnon-socket并花了很多时间试图找出导致的原因它。我终于发现是以下代码行导致了问题:if((sockfd=socket(ai->ai_family,ai->ai_socktype,ai->ai_protocol)看到问题了吗?该行应该如下所示:if((sockfd=socket(ai->ai_family,ai->ai_socktype,ai->ai_protocol))我不明白的是为什么第一行不正确的行没有产生警告。换句话说,一般形式不应该:if(foo=bar()编译器看起来很奇怪,尤其是使

c++ - 使用自定义行为实现字符串类

在我们的一个类(class)中,先生说模板允许一个人自定义类的行为,然后他给出了字符串类的例子,用几行代码我们可以从STL中自定义字符串类,就像我们可以做到的那样将'a'和'z'相同,'b'和'y'相同,'c'和'x'相同,依此类推。类似的'A'和'Z'相同等。"abc"=="zyx"为真;"abc"=="zyx"为假;"abc=="Zyx"为真;等等我正在考虑实现这样的字符串类,但我做不到。我们如何使用模板实现这样的字符串类? 最佳答案 这很棘手。您只需要编写自己的traits类,特别是您需要从char_traits派生它。类模板

c++ - 当我使用 win32 SendMessage 发送和转换标准字符串时,我得到了奇怪的字符

我需要将文本附加到win32编辑控件我有执行此操作的功能,但在编辑控件中打印的文本是乱码,为什么?示例代码取自here的Microsoft示例voidsettext(HWNDhDlg,std::strings){//std::wstringws;//ws.assign(s.begin(),s.end());//LPWSTRpwst=&ws[0];////gettemporaryLPCWSTR(prettysafe)//LPCWSTRpcwstr=ws.c_str();//SetDlgItemText(hWndEdit,IDC_EDIT1,pcwstr);HWNDhWndEdit=Get

c++ - 在这种情况下 unique_ptr 的行为应该是什么?

假设我有以下内容:std::unique_ptrpA;pA(newA);在这个复杂的例子中,pA(newA);的行为应该是怎样的?是吗?据我所知,在MSVC2010中,voidoperator()(T*)const;在new之后立即调用fromdefault_delete立即返回并删除指针。而g++(4.7.0)给了我nomatchforcall(std::unique_ptr)(A*)错误。 最佳答案 代码不应编译。std::unique_ptr不会重载operator()。VisualC++2011DeveloperPrevie

c++ - 奇怪的行为

我遇到了ofstream的一个奇怪行为,“对我来说最不奇怪”。这是我的程序,我使用的是VisualStudio2010ExpressEdition。intmain(){std::ofstreamfile("file.txt");file这会产生正确的输出。something1something2现在,如果我用以下代码替换第9行,file.open("file.txt",std::ios::ate);我得到了这个输出。something2但是如果我再次替换第9行,这次用这段代码,file.open("file.txt",std::ios::ate|std::ios::in);我得到了这个

c++ - 在 C++ 中,返回从本地 char 数组创建的字符串会导致内存泄漏或未定义的行为吗?

我想知道这是否会导致C++中的内存泄漏或未定义的结果?stringfoo(){chartempArray[30];strcpy(tempArray,"Thisisatest");returnstring(tempArray);}我知道这在C中是一件坏事,但我还没有找到C++的明确答案。所以每个人都在说不,但我仍然对何时释放内存感到困惑?假设我有调用上述方法的方法voidbar(){stringtestString=foo();}在上面的代码中,从foo()返回的字符串对象在什么时候调用了它的析构函数?是在复制到对象testString后立即执行的吗? 最佳答

c++ - 是在索引一个新的 map 元素并将读取它的东西分配给它未定义的行为,还是只是未指定的?

回答后thisquestion,关于所讨论的代码是否为未定义行为的问题进行了长时间的讨论。这是代码:std::mapword_count;word_count["a"]=word_count.count("a")==0?1:2;首先,众所周知,这至少是未指定的。结果因首先评估作业的哪一侧而异。在我的回答中,我遵循了四个结果案例中的每一个,首先评估哪一方的因素以及该元素是否在此之前存在。还有一个简短的表格出现了:(x=0)=(x==0)?1:2;//startedas(x=0)=(y=="a")?1:2;//changedto我声称它更像这样:(x=0,x)=(x==0)?1:2;//c

c++ - SIFT 算法中的奇怪 Octave 值?

我在opencv代码中使用sift算法从图像中获取描述符和关键点。我的代码是Ptrimage;vectorkeypoints;OutputArraydes;Feature2D*descriptor_type=newSIFT()Matimage_mat(image);(*descriptor_type)(image_mat,noArray(),keypoints,des,false);这里我可以在vector中获取图像的关键点。之后,我想获取每个关键点的Octave以获取更多详细信息。但是当我为一张图像计算每个关键点Octave值时,它看起来很奇怪我想确认他们是否正确。for(inti=

c++ - "Static counter"类型行为异常

我正在开发一个基于实体的组件系统,我正在尝试为组件类型分配某个索引:staticstd::size_tgetNextTypeId(){staticstd::size_tlastTypeIdBitIdx{0};++lastTypeIdBitIdx;//Thislineproducestheoutputattheendofthequestionstd::cout::bitIdxwillalwaysbedifferent//fromTypeIdStorage::bitIdxtemplatestructTypeIdStorage{staticconststd::size_tbitIdx;};/

c++ - 此代码行为是否定义明确?

这是一些C++代码:#includeclassA{intx;inty;doublev;public:A(intx,inty):x(x),y(y){std::cerr我得到以下输出:A(3,5)f(9.5)~A()即因为我希望它工作。但我不确定A的析构函数是否必须在f返回后调用。有保障吗?operatordouble*()返回的指针是否会在f的调用中变得无效? 最佳答案 您将A对象声明为f的实际参数,当您这样做时,对于所有效果而言,新对象就像f的局部变量,因此保证在f执行结束时调用~A。如果f返回由operatordouble*()返